package fr.umlv.m2.uwp2011.persistence.sujet.dao;

import java.util.ArrayList;
import java.util.List;

import fr.umlv.m2.uwp2011.persistence.matiere.Matiere;
import fr.umlv.m2.uwp2011.persistence.matiere.dao.HibernateMatiereDAO;
import fr.umlv.m2.uwp2011.persistence.sujet.Cours;
import fr.umlv.m2.uwp2011.persistence.sujet.ICoursDAO;
import fr.umlv.m2.uwp2011.persistence.sujet.Sujet;

public class HibernateCoursDAO extends HibernateSujetDAO implements ICoursDAO {
	private static final HibernateMatiereDAO matiereDAO = new HibernateMatiereDAO();

	static {
		Cours cours;
		Long cours_id;
		String type = Sujet.COURS;
		//--------- matiere prog reseau, id 1 -----------//
		Matiere matiere = matiereDAO.findById(1L);
		//--------------- cours with id 1 -----------//
		cours_id = 1L;
		cours = new Cours();
		cours.setId(cours_id);
		cours.setMatiere(matiere);
		cours.setType(type);
		cours.setTitre("Cours 1 : initiation a la programmation reseau");
		cours.setDescription("Description du cours 1 : initiation a la programmation reseau");
		allSujet.put(cours_id, cours);

		//--------------- cours with id 2 -----------//
		cours_id = 2L;
		cours = new Cours();
		cours.setId(cours_id);
		cours.setMatiere(matiere);
		cours.setType(type);
		cours.setTitre("Cours 2 : programmation reseau");
		cours.setDescription("Description du cours 2 : programmation reseau ...");
		allSujet.put(cours_id, cours);

		//--------------- cours with id 3 -----------//
		cours_id = 3L;
		cours = new Cours();
		cours.setId(cours_id);
		cours.setMatiere(matiere);
		cours.setType(type);
		cours.setTitre("Cours 3 : programmation reseau");
		cours.setDescription("Description du cours 3 : programmation reseau ...");
		allSujet.put(cours_id, cours);

		//--------------- cours with id 4 -----------//
		cours_id = 4L;
		cours = new Cours();
		cours.setId(cours_id);
		cours.setMatiere(matiere);
		cours.setType(type);
		cours.setTitre("Cours 4 : programmation reseau");
		cours.setDescription("Description du cours 4 : programmation reseau ...");
		allSujet.put(cours_id, cours);
		
		//--------- matiere prog C, id 2 -----------//
		matiere = matiereDAO.findById(2L);

		cours_id = 25L;
		cours = new Cours();
		cours.setId(cours_id);
		cours.setMatiere(matiere);
		cours.setType(type);
		cours.setTitre("Cours 1 : initiation a la programmation C");
		cours.setDescription("Description du cours 1 : initiation a la programmation C");
		allSujet.put(cours_id, cours);
		
		cours_id = 26L;
		cours = new Cours();
		cours.setId(cours_id);
		cours.setMatiere(matiere);
		cours.setType(type);
		cours.setTitre("Cours 2 : initiation a la programmation C");
		cours.setDescription("Description du cours 2 : initiation a la programmation C");
		allSujet.put(cours_id, cours);
		
		cours_id = 27L;
		cours = new Cours();
		cours.setId(cours_id);
		cours.setMatiere(matiere);
		cours.setType(type);
		cours.setTitre("Cours 3 : initiation a la programmation C");
		cours.setDescription("Description du cours 3 : initiation a la programmation C");
		allSujet.put(cours_id, cours);
		
		cours_id = 28L;
		cours = new Cours();
		cours.setId(cours_id);
		cours.setMatiere(matiere);
		cours.setType(type);
		cours.setTitre("Cours 4 : initiation a la programmation C");
		cours.setDescription("Description du cours 4 : initiation a la programmation C");
		allSujet.put(cours_id, cours);
		
		//--------- matiere reseaux sans fil, id 3 -----------//
		matiere = matiereDAO.findById(3L);

		cours_id = 29L;
		cours = new Cours();
		cours.setId(cours_id);
		cours.setMatiere(matiere);
		cours.setType(type);
		cours.setTitre("Cours 1 : reseaux sans fil");
		cours.setDescription("Description du cours 1 : les reseaux sans fil");
		allSujet.put(cours_id, cours);
		
		cours_id = 30L;
		cours = new Cours();
		cours.setId(cours_id);
		cours.setMatiere(matiere);
		cours.setType(type);
		cours.setTitre("Cours 2 : reseaux sans fil");
		cours.setDescription("Description du cours 2 : les reseaux sans fil");
		allSujet.put(cours_id, cours);
		
		cours_id = 31L;
		cours = new Cours();
		cours.setId(cours_id);
		cours.setMatiere(matiere);
		cours.setType(type);
		cours.setTitre("Cours 3 : reseaux sans fil");
		cours.setDescription("Description du cours 3 : les reseaux sans fil");
		allSujet.put(cours_id, cours);
		
		cours_id = 32L;
		cours = new Cours();
		cours.setId(cours_id);
		cours.setMatiere(matiere);
		cours.setType(type);
		cours.setTitre("Cours 4 : reseaux sans fil");
		cours.setDescription("Description du cours 4 : les reseaux sans fil");
		allSujet.put(cours_id, cours);
	}

	
	@Override
	public List<Sujet> findAll() {
		List<Sujet> list = new ArrayList<Sujet>();
		for(Sujet sujet : allSujet.values()) {
			if(Sujet.COURS.equals(sujet.getType())) {
				list.add(sujet);
			}
		}
		return list;
	}
	
	@Override
	public List<Sujet> findByMatiere(Long matiere_id) {
		List<Sujet> list = new ArrayList<Sujet>();
		for(Sujet sujet : allSujet.values()) {
			if(Sujet.COURS.equals(sujet.getType()) && sujet.getMatiere().getId() == matiere_id) {
				list.add(sujet);
			}
		}
		return list;
	}
}
